﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Data.SqlTypes;

namespace Jurassic_Island 
{

    public class CADEventosAleatorios
    {
        static private String cadenaConexion = ConfigurationManager.ConnectionStrings["JurassicBDConnectionString"].ConnectionString;
        SqlConnection conexion;
        DataSet dsEventos_Aleatorios;
        SqlDataAdapter sqldaEventos_Aleatorios;

        public CADEventosAleatorios()//constructor por defecto sin nada
        {

        }

        public DataSet ObtenerTablaEventosAleatorios()
        {
            DataSet dsEventosAleatorios = new DataSet();

            try
            {
                SqlConnection conexion = new SqlConnection(cadenaConexion);
                String consulta = "Select id_evaleat as 'ID', nombre_evaleat as 'Nombre', efecto_evaleat as 'Efecto' from Eventos_Aleatorios";
                SqlDataAdapter daEventosAleatorios = new SqlDataAdapter(consulta, conexion);
                daEventosAleatorios.MissingSchemaAction = MissingSchemaAction.AddWithKey;
                daEventosAleatorios.Fill(dsEventosAleatorios, "Eventos_Aleatorios");
            }
            catch (Exception ex)
            {
                throw (ex);
            }

            return dsEventosAleatorios;
        }

        public string InsertarEventosAleatorios(string nombre, double efecto)//metodo que inserta eventos aleatorios en la base de datos
        {
            string retorno = "";
            try
            {
                conexion = new SqlConnection(cadenaConexion);//nuevo objeto SQLCONNECTION
                sqldaEventos_Aleatorios = new SqlDataAdapter("select * from Eventos_Aleatorios", conexion);
                dsEventos_Aleatorios = new DataSet();//objeto DATASET
                sqldaEventos_Aleatorios.Fill(dsEventos_Aleatorios, "Eventos_Aleatorios");
                DataTable t = new DataTable();//OBJETO DATATABLE
                t = dsEventos_Aleatorios.Tables["Eventos_Aleatorios"];
                DataRow nuevafila = t.NewRow();
                nuevafila[1] = nombre;
                nuevafila[2] = efecto;
                t.Rows.Add(nuevafila);
                SqlCommandBuilder cbuilder = new SqlCommandBuilder(sqldaEventos_Aleatorios);
                if (sqldaEventos_Aleatorios.Update(dsEventos_Aleatorios, "Eventos_Aleatorios") == 0) //si el nº d filas actualizadas correctamente no es 0
                    retorno = "ERROR al insertar";

            }
            catch (SqlException sqlEx)
            {
                return "ERROR relacionado con la base de datos.\nDetalles:\n" + sqlEx.Message;
            }
            catch (Exception ex)
            {
                return "ERROR al intentar insertar un evento de localización.\nDetalles:\n" + ex.Message;
            }
            
            return retorno;
        }

        public DataSet EditarTablaEventosAleatorios(string nombre, double efecto)
        {
            DataSet dsEventosAleatorios = new DataSet();

            try
            {
                SqlConnection conexion = new SqlConnection(cadenaConexion);
                String consulta = "update Eventos_Aleatorios set nombre_evaleat='" + nombre + ", efecto_evaleat=" + efecto + "' where nombre_evaleat='" + nombre + "';";
                SqlDataAdapter daEventosAleatorios = new SqlDataAdapter(consulta, conexion);
                daEventosAleatorios.Fill(dsEventosAleatorios, "Eventos_Aleatorios");
            }

            catch (Exception ex)
            {
                throw (ex);
            }

            return dsEventosAleatorios;
        }

        public DataSet BuscarEventosAleatorios(string nombre)
        {
            DataSet dsEventosAleatorios = new DataSet();

            try
            {
                SqlConnection conexion = new SqlConnection(cadenaConexion);
                String consulta = "Select id_evaleat as 'ID', nombre_evaleat as 'Nombre', efecto_evaleat as 'Efecto' from Eventos_Aleatorios where nombre_evaleat like '%" + nombre + "%';";
                SqlDataAdapter daEventosAleatorios = new SqlDataAdapter(consulta, conexion);

                daEventosAleatorios.Fill(dsEventosAleatorios, "Eventos_Aleatorios");
            }

            catch (Exception ex)
            {
                throw (ex);
            }

            return dsEventosAleatorios;
        }

        public DataSet BorrarEventosAleatorios(string nombre)
        {
            DataSet dsEventosAleatorios = new DataSet();
            
            try
            {
                SqlConnection conexion = new SqlConnection(cadenaConexion);
                String consulta = "delete from Eventos_Aleatorios where nombre_evaleat like '%" + nombre + "%';";
                SqlDataAdapter daEventosAleatorios = new SqlDataAdapter(consulta, conexion);

                daEventosAleatorios.Fill(dsEventosAleatorios, "Eventos_Aleatorios");
            }

            catch (Exception ex)
            {
                throw (ex);
            }
            return dsEventosAleatorios;
        }

        public DataSet ObtenerNombreEventosAleatorios()
        {
            DataSet dsEventosAleatorios = new DataSet();

            try
            {
                SqlConnection conexion = new SqlConnection(cadenaConexion);
                String consulta = "Select nombre_evaleat as 'Nombre' from Eventos_Aleatorios;";
                SqlDataAdapter daEventosAleatorios = new SqlDataAdapter(consulta, conexion);
                daEventosAleatorios.Fill(dsEventosAleatorios, "Eventos_Aleatorios");
            }

            catch (Exception ex)
            {
                throw (ex);
            }
            return dsEventosAleatorios;
        }

        public bool ActualizarEventosAleatorios(DataSet dsEventosAleatorios)
        {
            bool resultado = false;

            try
            {
                SqlConnection conexion = new SqlConnection(cadenaConexion);
                String consulta = "Select id_evaleat as 'ID', nombre_evaleat as 'Nombre', efecto_evaleat as 'Efecto' from Eventos_Aleatorios";
                SqlDataAdapter daEventosAleatorios = new SqlDataAdapter(consulta, conexion);
                SqlCommandBuilder cb = new SqlCommandBuilder(daEventosAleatorios);
                cb.ConflictOption = ConflictOption.OverwriteChanges;
                daEventosAleatorios.UpdateCommand = cb.GetUpdateCommand();
                daEventosAleatorios.Update(dsEventosAleatorios, "Eventos_Aleatorios");
                dsEventosAleatorios.Tables["Eventos_Aleatorios"].AcceptChanges();

                resultado = true;
            }
            catch (Exception ex)
            {
                throw (ex);
            }

            return resultado;
        }
   }
}
